solve first-order differential equations